//
//  AppDelegate.swift
//  微博
//
//  Created by Jiang on 2019/2/12.
//  Copyright © 2019 Jiang. All rights reserved.
//

import UIKit
import UserNotifications

/*
 
 Swift！
 - 类
 - 结构体
 - 枚举
 以上三个都有构造函数,都可以有方法,整体看起来,都像原有的类
 */
/*
 重点要知道 Swift 中 NSClassFromString(反射机制)的写法
 - 反射最重要的目的就是为了解耦
 - 反射机制和工厂方法的根本就是为了解耦
 
 
 /*学习网站*/
 https://www.raywenderlich.com
 
 MATT的博客：AFN作者
 https://nshipster.com原版
 https://nshipster.cn 翻译的
 
 /*德国一帮iOS大牛写的iOS底层的blog*/
 https://www.objc.io
 https://objccn.io  王巍 onevcat
 
 斯坦福大学的 白胡子老头
 
 */
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?
    
    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        
        
        //#available是检测设备版本 如果是 10.0 以上
        if #available(iOS 10.0, *) {
            UNUserNotificationCenter.current().requestAuthorization(options: [.alert,.badge,.carPlay,.sound]) { (success, error) in
                print("授权" + (success ? "成功" : "失败"))
            }
        } else {// 10.0 以下
            //取得用户授权显示通知(上方的提示条/声音/BadgeNumber)
            let notifySetting = UIUserNotificationSettings(types: [.alert,.badge,.sound], categories: nil)
            application.registerUserNotificationSettings(notifySetting)
        }
        
        window = UIWindow()
        window?.backgroundColor = UIColor.white
        window?.rootViewController = WBMainViewController()
        window?.makeKeyAndVisible()
        
        loadAppInfo()
        
        return true
    }

//    6天 第5个

}

extension AppDelegate {
    
    private func loadAppInfo() {
        //1.模拟异步
        DispatchQueue.global().async {
            // 1> url
            let url = Bundle.main.url(forResource: "main.json", withExtension: nil)
            // 2> data
            let data = NSData(contentsOf: url!)
            // 3>写入磁盘
            let docDir = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0]
            let jsonPath = (docDir as NSString).appendingPathComponent("main.json")
            //直接保存在沙盒,等待下一次程序启动调用
            data?.write(toFile: jsonPath, atomically: true)
            print("应用程序加载完毕\(jsonPath)")
        }
        
    }
    
}
